const htmlEntities = str => str.replace(/[\u00A0-\u9999<>&]/g, c => `&#${c.charCodeAt(0)};`);

// 基础混淆函数
function obfuscate(code, options = {}) {
  const { 
    commentRatio = 0.3,  // 30%概率插入混淆注释
    entityEncode = true, // 启用HTML实体编码
    randomAttr = true    // 添加随机属性
  } = options;

  let result = code;

  // 插入随机注释
  if (commentRatio > 0) {
    result = result.split('\n').map(line => {
      if (Math.random() < commentRatio) {
        return `${line}<!-- ${Math.random().toString(36).substr(2, 8)} -->`;
      }
      return line;
    }).join('\n');
  }

  // HTML实体编码
  if (entityEncode) {
    result = htmlEntities(result)
      .replace(/"/g, '&quot;')
      .replace(/'/g, '&apos;');
  }

  // 添加随机属性
  if (randomAttr) {
    result = result.replace(/(<svg[^>]*)/g, (match) => {
      const random = `data-_${Math.random().toString(36).substr(2, 5)}`;
      return `${match} ${random}="1"`;
    });
  }

  return result;
}

module.exports = { obfuscate };